package com.adee.java;

public class App {
    public static void main(String[] args) {
        // 整数加减法就是补码做加减法，然后去掉进位
        String a = Integer.toHexString(Integer.MAX_VALUE + 1);
        System.out.println("Integer.toHexString(): " + Integer.toHexString(Integer.MAX_VALUE));
        System.out.println("Integer.MAX_VALUE + 1: " + a);

        // <<左移，>>有符号右移，>>>无符号右移。
        // 右移区分有符号和无符号，左移就不区分了，因为左移空位都补0
        int b = -10; // 11111111111111111111111111110110
        System.out.println(Integer.toBinaryString(b));
        System.out.println(Integer.toBinaryString(b >> 2)); // 11111111111111111111111111111101
        System.out.println(Integer.toBinaryString(b >>> 2)); // 111111111111111111111111111101
        System.out.println(Integer.toBinaryString(b << 2)); // 11111111111111111111111111011000
        System.out.println(Integer.toBinaryString(1 << 31)); // 10000000000000000000000000000000
        System.out.println(1 << 31 == Integer.MIN_VALUE); // true

    }
}
